using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using database;
using objetos;

namespace dados
{
	#region TB_EMPRESA
	/// <summary>
	/// This object represents the properties and methods of a TB_EMPRESA.
	/// </summary>
	public class DAL_TB_EMPRESA
	{		
	
		/// <summary>
		/// Incluir via aplicacao
		/// </summary>	
		public int Incluir(OBJ_TB_EMPRESA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				List<string> lista = new List<string>();		
	
				db.CreateParameter("@id_tipo_empresa", SqlDbType.Int, obj.id_tipo_empresa);				
				lista.Add("@id_tipo_empresa");				
				db.CreateParameter("@nome", SqlDbType.VarChar, obj.nome);				
				lista.Add("@nome");				
				db.CreateParameter("@fantasia", SqlDbType.VarChar, obj.fantasia);				
				lista.Add("@fantasia");				
				db.CreateParameter("@cnpj", SqlDbType.Char, obj.cnpj);				
				lista.Add("@cnpj");				
				db.CreateParameter("@insc_est", SqlDbType.VarChar, obj.insc_est);				
				lista.Add("@insc_est");				
				db.CreateParameter("@insc_est_st", SqlDbType.VarChar, obj.insc_est_st);				
				lista.Add("@insc_est_st");				
				db.CreateParameter("@insc_mun", SqlDbType.VarChar, obj.insc_mun);				
				lista.Add("@insc_mun");				
				db.CreateParameter("@id_cnae_primario", SqlDbType.Int, obj.id_cnae_primario);				
				lista.Add("@id_cnae_primario");
                db.CreateParameter("@id_crt", SqlDbType.Int, obj.id_crt);
                lista.Add("@id_crt");
 
				db.CreateParameter("@email", SqlDbType.VarChar, obj.email);				
				lista.Add("@email");				
				db.CreateParameter("@logo", SqlDbType.Text, obj.logo);				
				lista.Add("@logo");				
				db.CreateParameter("@sit_ativo", SqlDbType.Bit, obj.sit_ativo);				
				lista.Add("@sit_ativo");				
				db.CreateParameter("@observacao", SqlDbType.Text, obj.observacao);				
				lista.Add("@observacao");				
				db.CreateParameter("@dt_cadastro", SqlDbType.DateTime, obj.dt_cadastro);				
				lista.Add("@dt_cadastro");				
				db.CreateParameter("@dt_atualizacao", SqlDbType.DateTime, obj.dt_atualizacao);				
				lista.Add("@dt_atualizacao");				
	
				string query = String.Format("Insert Into tb_empresa ({0}) Values ({1}); SELECT SCOPE_IDENTITY()",  string.Join(",",lista.ToArray()).ToString().Replace("@", ""), string.Join(",",lista.ToArray()).ToString());
				ds = db.ExecuteQuery(query);
				
				return Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
		
		/// <summary>
		/// Update via aplicacao
		/// </summary>			
		public void Alterar(OBJ_TB_EMPRESA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				List<string> lista = new List<string>();
	
				db.CreateParameter("@id", SqlDbType.Int, obj.id);
				
	
				db.CreateParameter("@id_tipo_empresa", SqlDbType.Int, obj.id_tipo_empresa);
				lista.Add("id_tipo_empresa = @id_tipo_empresa");
				db.CreateParameter("@nome", SqlDbType.VarChar, obj.nome);
				lista.Add("nome = @nome");
				db.CreateParameter("@fantasia", SqlDbType.VarChar, obj.fantasia);
				lista.Add("fantasia = @fantasia");
				db.CreateParameter("@cnpj", SqlDbType.Char, obj.cnpj);
				lista.Add("cnpj = @cnpj");
				db.CreateParameter("@insc_est", SqlDbType.VarChar, obj.insc_est);
				lista.Add("insc_est = @insc_est");
				db.CreateParameter("@insc_est_st", SqlDbType.VarChar, obj.insc_est_st);
				lista.Add("insc_est_st = @insc_est_st");
				db.CreateParameter("@insc_mun", SqlDbType.VarChar, obj.insc_mun);
				lista.Add("insc_mun = @insc_mun");
				db.CreateParameter("@id_cnae_primario", SqlDbType.Int, obj.id_cnae_primario);
				lista.Add("id_cnae_primario = @id_cnae_primario");

                db.CreateParameter("@id_crt", SqlDbType.Int, obj.id_crt);
                lista.Add("id_crt = @id_crt");
 
				db.CreateParameter("@email", SqlDbType.VarChar, obj.email);
				lista.Add("email = @email");
				db.CreateParameter("@logo", SqlDbType.Text, obj.logo);
				lista.Add("logo = @logo");
				db.CreateParameter("@sit_ativo", SqlDbType.Bit, obj.sit_ativo);
				lista.Add("sit_ativo = @sit_ativo");
				db.CreateParameter("@observacao", SqlDbType.Text, obj.observacao);
				lista.Add("observacao = @observacao");
				db.CreateParameter("@dt_cadastro", SqlDbType.DateTime, obj.dt_cadastro);
				lista.Add("dt_cadastro = @dt_cadastro");
				db.CreateParameter("@dt_atualizacao", SqlDbType.DateTime, obj.dt_atualizacao);
				lista.Add("dt_atualizacao = @dt_atualizacao");
	
				string query = String.Format("Update TB_EMPRESA Set {0} Where id = @id", string.Join(",",lista.ToArray()).ToString());
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}	
		
		/// <summary>
		/// Delete viaaplicacao
		/// </summary>	
		public void Excluir(OBJ_TB_EMPRESA obj)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				StringBuilder queryParameters = new StringBuilder();
				db.CreateParameter("@id", SqlDbType.Int, obj.id);
		
				string query = "Delete tb_empresa Where id = @id";			
				db.ExecuteQuery(query);
			}
			catch (Exception)
       		{
            	throw;
        	}
		}
	
	
		/// <summary>
		/// Lista objeto
		/// </summary>						
		public List<OBJ_TB_EMPRESA> SelecionarLista()
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				List<OBJ_TB_EMPRESA> lista = new List<OBJ_TB_EMPRESA>();
				OBJ_TB_EMPRESA obj = null;
				DataTable dt = new DataTable();
				DataSet ds = new DataSet();
				StringBuilder sb = new StringBuilder();

                sb.Append("   SELECT     tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
                sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,  tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
                sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
                sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro AS tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
                sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
                sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
                sb.Append(" FROM         tb_empresa INNER JOIN ");
                sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
                sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
                sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
                sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
                sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
                sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
        
	            ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
					{											
						obj = new OBJ_TB_EMPRESA();
						Set(obj,dr);
						lista.Add(obj);
		
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}
		
		/// <summary>
		/// Set Objeto
		/// </summary>	
		private void Set(OBJ_TB_EMPRESA obj,DataRow dr)
		{
			obj.id = Convert.ToInt32(dr["id"]);						
			obj.id_tipo_empresa = Convert.ToInt32(dr["id_tipo_empresa"].ToString()) ;	
			obj.nome = dr["nome"] == DBNull.Value ?  string.Empty : dr["nome"].ToString() ;
			obj.fantasia = dr["fantasia"] == DBNull.Value ?  string.Empty : dr["fantasia"].ToString() ;
			obj.cnpj = dr["cnpj"] == DBNull.Value ?  string.Empty : dr["cnpj"].ToString() ;
			obj.insc_est = dr["insc_est"] == DBNull.Value ?  string.Empty : dr["insc_est"].ToString() ;
			obj.insc_est_st = dr["insc_est_st"] == DBNull.Value ?  string.Empty : dr["insc_est_st"].ToString() ;
			obj.insc_mun = dr["insc_mun"] == DBNull.Value ?  string.Empty : dr["insc_mun"].ToString() ;
			obj.id_cnae_primario = Convert.ToInt32(dr["id_cnae_primario"].ToString()) ;
            obj.id_crt = Convert.ToInt32(dr["id_crt"].ToString());  
			obj.email = dr["email"] == DBNull.Value ?  string.Empty : dr["email"].ToString() ;
			obj.logo = dr["logo"] == DBNull.Value ?  string.Empty : dr["logo"].ToString() ;
			obj.sit_ativo = Convert.ToBoolean(dr["sit_ativo"].ToString()) ;
			obj.observacao = dr["observacao"] == DBNull.Value ?  string.Empty : dr["observacao"].ToString() ;
			obj.dt_cadastro = dr["dt_cadastro"] == DBNull.Value ? (DateTime?)null :  Convert.ToDateTime(dr["dt_cadastro"].ToString()) ;						
			obj.dt_atualizacao = dr["dt_atualizacao"] == DBNull.Value ? (DateTime?)null :  Convert.ToDateTime(dr["dt_atualizacao"].ToString()) ;            
			
		}						
				
		/// <summary>
		/// Selecionar Objeto Por ID
		/// </summary>	
		public OBJ_TB_EMPRESA SelecionarObjetoPorId(int id)
		{
			try
			{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_EMPRESA obj = new OBJ_TB_EMPRESA();
				DataSet ds = new DataSet();				
				DataTable dt = new DataTable();
                StringBuilder sb = new StringBuilder();
				db.CreateParameter("@id", SqlDbType.Int, id);
                sb.Append("   SELECT     tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
                sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,  tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
                sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
                sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
                sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
                sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
                sb.Append(" FROM         tb_empresa INNER JOIN ");
                sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
                sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
                sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
                sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
                sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
                sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
                sb.Append(" Where tb_empresa.id = @id");
                ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					
					foreach (DataRow dr in dt.Rows)
                	{
						obj = new OBJ_TB_EMPRESA();
						Set(obj,dr);																			
					}
					return obj;
					
				}
				else
				{
					return null;	
				}			
			}
			catch (Exception)
       		{
            	throw;
        	}
			
		}
					
		
		
		/// <summary>
		/// Lista objeto Parametro Where OrderBy
		/// </summary>							
		public List<OBJ_TB_EMPRESA> SelecionarLista(String Where, String OrderBy)
    	{
        	try
        	{
				DAO_DATABASE db = new DAO_DATABASE();
				OBJ_TB_EMPRESA obj = null;
				DataSet ds = new DataSet();
				DataTable dt = new DataTable();
				List<OBJ_TB_EMPRESA> lista = new List<OBJ_TB_EMPRESA>();
				
				StringBuilder sb = new StringBuilder();
				db.CreateParameter("@Where",SqlDbType.VarChar, Where );
				db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy );

                sb.Append("   SELECT     tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
                sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,   tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
                sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
                sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
                sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
                sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
                sb.Append(" FROM         tb_empresa INNER JOIN ");
                sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
                sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
                sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
                sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
                sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
                sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
				if(Where != string.Empty)				
				sb.Append(string.Format(" Where {0} ",Where));
				if(OrderBy != string.Empty)
				sb.Append(string.Format(" Order by {0}",OrderBy));
				
				ds = db.ExecuteQuery(sb.ToString());
				
				if(!db.DataSetIsEmpty(ds))
				{
					dt = ds.Tables[0];
					foreach (DataRow dr in dt.Rows)
					{						
						obj = new OBJ_TB_EMPRESA();
						Set(obj,dr);			
						lista.Add(obj);
					}
				}
				return lista;
        	}
        	catch (Exception)
       		{
            	throw;
        	}

    	}

		
		public DataSet Selecionar(String Where, String OrderBy, int PageIndex, int PageSize )
		{
				DAO_DATABASE db = new DAO_DATABASE();
				DataSet ds = new DataSet();
				
				StringBuilder sb = new StringBuilder();
				
				PageIndex = PageSize * PageIndex;
            	PageSize =  PageIndex + PageSize;
				
		      	if (OrderBy == string.Empty) OrderBy = "tb_empresa.id";

            	sb.Append("SELECT * FROM ");
            	sb.Append(string.Format(" (SELECT ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber,",OrderBy));
                sb.Append("  tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
                sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,   tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
                sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
                sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
                sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
                sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
                sb.Append(" FROM         tb_empresa INNER JOIN ");
                sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
                sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
                sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
                sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
                sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
                sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				sb.Append(" ) query  ");
				sb.Append(string.Format(" WHERE RowNumber BETWEEN {0} + 1 and {1}; ",PageIndex,PageSize));

            	sb.Append("SELECT count(*) FROM tb_empresa");
				if (Where != string.Empty)
				{
					sb.Append(string.Format(" WHERE {0}", Where));
				}
				ds = db.ExecuteQuery(sb.ToString());
				
				if (!db.DataSetIsEmpty(ds))
            	{
                publico.PUB_PAGINACAO.CalcularTotalDePaginas(Convert.ToDecimal(ds.Tables[1].Rows[0][0].ToString()));
            	}

				
            	return ds;
								
		}
				
								
		public DataSet Selecionar(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append("   SELECT     tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
            sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,   tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
            sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
            sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
            sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
            sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
            sb.Append(" FROM         tb_empresa INNER JOIN ");
            sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
            sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
            sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
            sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
            sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
            sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
           if (Where != string.Empty)
            {
                db.CreateParameter("@Where", SqlDbType.VarChar, Where);
                sb.Append(string.Format(" Where  {0}",Where));
            }

            if (OrderBy != string.Empty)
            {
                db.CreateParameter("@OrderBy", SqlDbType.VarChar, OrderBy);
                sb.Append(string.Format(" Order By {0}", OrderBy));
            }

            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		public DataSet Selecionar()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            sb.Append("   SELECT     tb_empresa.id, tb_empresa.id_tipo_empresa, CASE WHEN id_tipo_empresa = 1 THEN 'MATRIZ' ELSE 'FILIAL' END AS tipo_empresa, tb_empresa.nome,  ");
            sb.Append("           tb_empresa.fantasia, tb_empresa.cnpj, tb_empresa.insc_est, tb_empresa.insc_est_st,   tb_empresa.insc_mun, tb_empresa.id_cnae_primario, tb_empresa.id_crt, tb_empresa.email,  ");
            sb.Append("    tb_empresa.logo, tb_empresa.sit_ativo, tb_empresa.observacao, tb_empresa.dt_cadastro, tb_empresa.dt_atualizacao,  ");
            sb.Append(" tb_tipo_logradouro.desc_tipo_logradouro, tb_tipo_endereco.desc_tipo_endereco, tb_paises.descricao AS paises, tb_cidade.cidade,  ");
            sb.Append(" tb_endereco_empresa.endereco, tb_endereco_empresa.numero, tb_endereco_empresa.bairro, tb_endereco_empresa.cep, tb_endereco_empresa.complemento,  ");
            sb.Append(" tb_endereco_empresa.telefone, tb_endereco_empresa.sit_principal, tb_uf.uf ");
            sb.Append(" FROM         tb_empresa INNER JOIN ");
            sb.Append("           tb_endereco_empresa ON tb_empresa.id = tb_endereco_empresa.id_empresa INNER JOIN ");
            sb.Append("        tb_tipo_logradouro ON tb_endereco_empresa.id_logradouro = tb_tipo_logradouro.id INNER JOIN ");
            sb.Append(" tb_tipo_endereco ON tb_endereco_empresa.id_endereco_tipo = tb_tipo_endereco.id INNER JOIN ");
            sb.Append(" tb_paises ON tb_endereco_empresa.id_pais = tb_paises.id INNER JOIN ");
            sb.Append(" tb_cidade ON tb_endereco_empresa.id_cidade = tb_cidade.id INNER JOIN ");
            sb.Append(" tb_uf ON tb_endereco_empresa.id_uf = tb_uf.id ");
            sb.Append(" Order By tb_empresa.id");            
            ds = db.ExecuteQuery(sb.ToString());
            return ds;
        }		
		
		
		public DataSet ListaCampos()
        {

            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT TABLE_NAME, ORDINAL_POSITION, ");
            sb.Append(" COLUMN_NAME, DATA_TYPE, IS_NULLABLE ");
            sb.Append(" FROM INFORMATION_SCHEMA.COLUMNS");
            sb.Append(" WHERE TABLE_NAME = 'tb_empresa'");
            ds = db.ExecuteQuery(sb.ToString());

            return ds;

        }

		public DataSet DropdownList()
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
			sb.Append("SELECT ");
			sb.Append(" id ");
				sb.Append(", id_tipo_empresa ");  				
				sb.Append(", nome ");  				
				sb.Append(", fantasia ");  				
			sb.Append(" FROM tb_empresa ");           
			sb.Append(" ORDER BY id_tipo_empresa ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_EMPRESA_DROPDOWNLIST");  
            return ds;
        }

        public DataSet DropdownList(String Where)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");												
			sb.Append(", nome ");  				
			
			
			sb.Append(", fantasia ");  				
			sb.Append(" FROM tb_empresa ");
			sb.Append(string.Format(" WHERE {0} ",Where));
			sb.Append(" ORDER BY id_tipo_empresa ");
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_EMPRESA_DROPDOWNLIST");
            return ds;
        }
		
		  public DataSet DropdownList(String Where, String OrderBy)
        {
            DAO_DATABASE db = new DAO_DATABASE();
            DataSet ds = new DataSet();
            StringBuilder sb = new StringBuilder();
            db.CreateParameter("@Where", SqlDbType.VarChar, Where);
			sb.Append("SELECT ");
			sb.Append(" id ");			
			sb.Append(", nome ");  				
			sb.Append(", fantasia ");  				
			sb.Append(" FROM tb_empresa ");
			sb.Append(string.Format(" WHERE {0} ORDER BY {1}",Where,OrderBy));			
            ds = db.ExecuteQuery(sb.ToString());

            // ds = db.ExecuteProcedure("USP_TB_EMPRESA_DROPDOWNLIST");
            return ds;
        }


          public DataTable CriarDataTable()
          {
              DataTable table = new DataTable();
              table.Columns.Add("ID", typeof(int));
              table.Columns.Add("NOME", typeof(string));
              table.Columns.Add("FANTASIA", typeof(string));
              table.Columns.Add("TIPO_EMPRESA", typeof(string));
              table.Columns.Add("INSC_ESTADUAL", typeof(string));
              table.Columns.Add("INSC_ESTADUAL_ST", typeof(string));
              table.Columns.Add("INSC_MUNICIPAL", typeof(string));
              table.Columns.Add("EMAIL", typeof(string));
              table.Columns.Add("ID_CNAE_PRIMARIO", typeof(int));
              table.Columns.Add("ID_CRT", typeof(int));
              table.Columns.Add("CNAE", typeof(string));
              table.Columns.Add("DT_ATUALIZACAO", typeof(DateTime));
              table.Columns.Add("DT_CADASTRO", typeof(DateTime));
              table.Columns.Add("SIT_ATIVO", typeof(bool));              
              return table;
          }

          public DataTable PreencheDataTable(DataTable dt, OBJ_TB_EMPRESA obj)
          {
              DataRow dr = dt.NewRow();
              dr["ID"] = obj.id.ToString();
              dr["NOME"] = obj.nome.ToString();
              dr["FANTASIA"] = obj.fantasia.ToString();
              dr["CNPJ"] = obj.cnpj.ToString();
              dr["TIPO_EMPRESA"] = obj.Tb_tipo_empresa.desc_tipo_empresa.ToString();
              dr["INSC_ESTADUAL"] = obj.insc_est.ToString();
              dr["INSC_ESTADUAL_ST"] = obj.insc_est_st.ToString();
              dr["INSC_MUNICIPAL"] = obj.insc_mun.ToString();
              dr["EMAIL"] = obj.email.ToString();
              dr["ID_CNAE_PRIMARIO"] = obj.id_cnae_primario;
              dr["ID_CRT"] = obj.id_cnae_primario;
              dr["CNAE"] = obj.Tb_cnae.descricao.ToString();
              dr["DT_ATUALIZACAO"] = obj.dt_atualizacao;
              dr["DT_CADASTRO"] = obj.dt_cadastro;
              dr["SIT_ATIVO"] = obj.sit_ativo;
             
            
              dt.Rows.Add(dr);
              return dt;

          }



	}
	#endregion
}

